Sqrt<>示例演示了模板元程序可以有:

\begin{itemize}
\item 
状态变量:模板参数

\item 
循环构造:通过递归

\item 
执行路径选择:通过使用条件表达式或特化

\item 
整数运算
\end{itemize}

若不限制递归实例化的数量和允许状态变量的数量，这足以进行任何计算，但使用模板可能不方便这样做。此外，由于模板实例化需要大量的编译器资源，大量的递归实例化会降低编译器的处理速度，甚至耗尽可用的资源。C++标准建议(但不是强制)至少允许1024级递归实例化，这对于大多数(但肯定不是所有)模板元编程任务来说已经足够了。

实践中，模板元程序应该有节制地使用。作为实现方便模板的工具，其不可替代。特别是，有时可以隐藏在模板内部，以便从关键算法实现中挤出更多的性能。














































